package com.作业.Day21;

import java.lang.reflect.ParameterizedType;
import java.lang.reflect.Type;

/**
 * 思考一下，通过反射能不能得到泛型的类型信息，如何实现？
 *
 * 类的父类泛型声明
 * 接口实现的泛型参数
 * 方法参数中的泛型类型
 * 字段声明中的泛型类型
 *
 *
 *
 *
 */
public class Homework4 {
    public static void main(String[] args) {
//        类的父类泛型声明
        //获取类的泛型父类
        Type genericInterfaces = StringClass.class.getGenericSuperclass();
        //判断是否带有泛型类型的参数
        if(genericInterfaces instanceof ParameterizedType){
            //如果是，将转换为参数化类型
            ParameterizedType parameterizedType = (ParameterizedType) genericInterfaces;

            Type[] actualTypeArguments = parameterizedType.getActualTypeArguments();
            System.out.println(actualTypeArguments[0]);
        }
    }
}
// 定义一个带泛型的基类
class BaseClass<T> {
}

// 继承基类并指定泛型参数
class StringClass extends BaseClass<String> {
}